package com.atguigu.delivery.servlet;

import com.atguigu.delivery.entity.SysUser;
import com.atguigu.delivery.service.api.SysUserService;
import com.atguigu.delivery.service.impl.SysUserServiceImpl;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet(urlPatterns = "/SysUserServletLogin")
public class SysUserServletLogin extends HttpServlet {

    private SysUserService sysUserService = new SysUserServiceImpl();

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1、获取表单提交的请求参数
        String account = request.getParameter("account");
        String password = request.getParameter("password");

        // 2、调用 Service 方法，一方面验证用户名、密码是否正确，另外一方面返回已登录的 SysUser 对象
        SysUser sysUser = sysUserService.getSysUserForLogin(account, password);

        // 3、判断 SysUser 对象是否为 null
        if (sysUser == null) {
            // 4、登录失败，跳转到登录页面，并提示错误信息
            // 转发：需要通过请求域携带数据到下一个资源时，使用转发
            // 重定向：希望浏览器另外发一个请求再次访问后端，使用重定向
            // 将来我们会通过请求域携带提示信息到登录页面，所以这里我们使用转发
            // request.getRequestDispatcher("/login.html").forward(request, response);

            // 把提示信息存入请求域
            request.setAttribute("message", "用户名或密码错误，请重新登录");

            // 转发到 JSP 页面
            request.getRequestDispatcher("/login.jsp").forward(request, response);

        } else {
            // 5、登录成功，跳转到 index.html 页面
            response.sendRedirect("/index.html");
        }
    }
}
